import { IPSDataEntity } from '../dataentity/ipsdata-entity';
import { IPSDEAction } from '../dataentity/action/ipsdeaction';
import { IPSDEField } from '../dataentity/defield/ipsdefield';
import { IPSSystemModule } from '../system/ipssystem-module';
import { IPSModelObject } from '../ipsmodel-object';

/**
 *
 * @export
 * @interface IPSSysDTSQueue
 */
export interface IPSSysDTSQueue extends IPSModelObject {
  /**
   * 取消操作实体行为
   *
   * @type {IPSDEAction}
   */
  getCancelPSDEAction(): IPSDEAction | null;

  /**
   * 取消操作实体行为
   *
   * @type {IPSDEAction}
   */
  get cancelPSDEAction(): IPSDEAction | null;

  /**
   * 取消操作实体行为（必须存在）
   *
   * @type {IPSDEAction}
   */
  getCancelPSDEActionMust(): IPSDEAction;

  /**
   * 取消超时时长（毫秒）
   * @type {number}
   * @default -1
   */
  cancelTimeout: number;

  /**
   * 已取消状态值
   * @type {string}
   * @default 41
   */
  cancelledState: string;

  /**
   * 确认操作实体行为
   *
   * @type {IPSDEAction}
   */
  getConfirmPSDEAction(): IPSDEAction | null;

  /**
   * 确认操作实体行为
   *
   * @type {IPSDEAction}
   */
  get confirmPSDEAction(): IPSDEAction | null;

  /**
   * 确认操作实体行为（必须存在）
   *
   * @type {IPSDEAction}
   */
  getConfirmPSDEActionMust(): IPSDEAction;

  /**
   * 已建立状态值
   * @type {string}
   * @default 10
   */
  createdState: string;

  /**
   * 错误属性对象
   *
   * @type {IPSDEField}
   */
  getErrorPSDEField(): IPSDEField | null;

  /**
   * 错误属性对象
   *
   * @type {IPSDEField}
   */
  get errorPSDEField(): IPSDEField | null;

  /**
   * 错误属性对象（必须存在）
   *
   * @type {IPSDEField}
   */
  getErrorPSDEFieldMust(): IPSDEField;

  /**
   * 处理失败状态值
   * @type {string}
   * @default 40
   */
  failedState: string;

  /**
   * 已完成状态值
   * @type {string}
   * @default 30
   */
  finishedState: string;

  /**
   * 历史数据实体对象
   *
   * @type {IPSDataEntity}
   */
  getHistoryPSDataEntity(): IPSDataEntity | null;

  /**
   * 历史数据实体对象
   *
   * @type {IPSDataEntity}
   */
  get historyPSDataEntity(): IPSDataEntity | null;

  /**
   * 历史数据实体对象（必须存在）
   *
   * @type {IPSDataEntity}
   */
  getHistoryPSDataEntityMust(): IPSDataEntity;

  /**
   * 实体对象
   *
   * @type {IPSDataEntity}
   */
  getPSDataEntity(): IPSDataEntity | null;

  /**
   * 实体对象
   *
   * @type {IPSDataEntity}
   */
  get psDataEntity(): IPSDataEntity | null;

  /**
   * 实体对象（必须存在）
   *
   * @type {IPSDataEntity}
   */
  getPSDataEntityMust(): IPSDataEntity;

  /**
   * 系统模块
   *
   * @type {IPSSystemModule}
   */
  getPSSystemModule(): IPSSystemModule | null;

  /**
   * 系统模块
   *
   * @type {IPSSystemModule}
   */
  get psSystemModule(): IPSSystemModule | null;

  /**
   * 系统模块（必须存在）
   *
   * @type {IPSSystemModule}
   */
  getPSSystemModuleMust(): IPSSystemModule;

  /**
   * 处理中状态值
   * @type {string}
   * @default 20
   */
  processingState: string;

  /**
   * 推送实体行为
   *
   * @type {IPSDEAction}
   */
  getPushPSDEAction(): IPSDEAction | null;

  /**
   * 推送实体行为
   *
   * @type {IPSDEAction}
   */
  get pushPSDEAction(): IPSDEAction | null;

  /**
   * 推送实体行为（必须存在）
   *
   * @type {IPSDEAction}
   */
  getPushPSDEActionMust(): IPSDEAction;

  /**
   * 刷新实体行为
   *
   * @type {IPSDEAction}
   */
  getRefreshPSDEAction(): IPSDEAction | null;

  /**
   * 刷新实体行为
   *
   * @type {IPSDEAction}
   */
  get refreshPSDEAction(): IPSDEAction | null;

  /**
   * 刷新实体行为（必须存在）
   *
   * @type {IPSDEAction}
   */
  getRefreshPSDEActionMust(): IPSDEAction;

  /**
   * 刷新间隔时长（毫秒）
   * @type {number}
   * @default -1
   */
  refreshTimer: number;

  /**
   * 状态属性对象
   *
   * @type {IPSDEField}
   */
  getStatePSDEField(): IPSDEField | null;

  /**
   * 状态属性对象
   *
   * @type {IPSDEField}
   */
  get statePSDEField(): IPSDEField | null;

  /**
   * 状态属性对象（必须存在）
   *
   * @type {IPSDEField}
   */
  getStatePSDEFieldMust(): IPSDEField;

  /**
   * 时间属性对象
   *
   * @type {IPSDEField}
   */
  getTimePSDEField(): IPSDEField | null;

  /**
   * 时间属性对象
   *
   * @type {IPSDEField}
   */
  get timePSDEField(): IPSDEField | null;

  /**
   * 时间属性对象（必须存在）
   *
   * @type {IPSDEField}
   */
  getTimePSDEFieldMust(): IPSDEField;
}
